package com.example.servlet.quick.start.demo;

import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;

public class ServletQuickStartDemo1 implements Servlet {

    /**
     * 初始化方法
     * 在Servlet被创建时执行，只会执行一次
     * 在web.xml中配置 <load-on-startup></load-on-startup>标签指示init方法的执行时机
     *      小于 0 的值（默认）：在被调用时执行；
     *      大于等于 0 的值：在启动时执行
     * @param config			a <code>ServletConfig</code> object
     *					containing the servlet's
     * 					configuration and initialization parameters
     *
     * @throws ServletException
     */
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init servlet method excute ~~~");
    }

    @Override
    public ServletConfig getServletConfig() {
        System.out.println("get servlet config method excute ~~~");
        return null;
    }

    /**
     * 提供服务的方法
     * 每一次Servlet被访问时执行
     * @param req 	the <code>ServletRequest</code> object that contains
     *			the client's request
     *
     * @param res 	the <code>ServletResponse</code> object that contains
     *			the servlet's response
     *
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        res.setContentType("text/html");
        PrintWriter out = res.getWriter();
        out.println("<html><body>");
        out.println("<h1> hello </h1>");
        out.println("</body></html>");
        System.out.println("servlet service method excute ~~~");
    }

    @Override
    public String getServletInfo() {
        System.out.println("get servlet info method excute ~~~");
        return null;
    }

    /**
     * 在 Servlet 服务被正常停止时执行，只执行一次
     * 通常用于释放资源
     */
    @Override
    public void destroy() {
        System.out.println("destory servlet method excute ~~~");
    }
}
